package com.itlong.cloud.sdk.resource;

import com.itlong.cloud.POJO.DTO.property.PropertyEquipGetDTO;
import com.itlong.cloud.POJO.DTO.sdk.SDKEquipGetByPageDTO;
import com.itlong.cloud.POJO.DTO.sdk.SDKEquipGetPageDTO;
import com.itlong.cloud.POJO.DTO.sdk.SDKUnitInfoSaveDTO;
import com.itlong.cloud.POJO.PO.DeviceElevatorAuthPO;
import com.itlong.cloud.POJO.PO.DeviceElevatorBridgeInfoPO;
import com.itlong.cloud.POJO.PO.DeviceElevatorInfoPO;
import com.itlong.cloud.POJO.VO.property.PropertyEquipRecordGetVO;
import com.itlong.cloud.equip.sdk.ISDKServerOldEquipServiceClient;
import com.itlong.cloud.sdk.service.ISDKServerOldEquipService;
import com.itlong.cloud.utils.page.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

/**
 * <desc>
 *      SDK设备服务暴露接口实现类。
 * </desc>
 *
 * @createDate 2017/11/14
 */
@RestController
public class SDKServerOldEquipResource implements ISDKServerOldEquipServiceClient {

    @Autowired
    ISDKServerOldEquipService iSDKServerOldEquipService;


    /**
     * <desc>
     *      根据地址，分页查询设备信息
     * <desc/>
     * @param       sdkEquipGetPageDTO  待查询的数据封装对象
     * @return      分页设备信息
     * @author Biao.R
     * @createDate 2017/11/16
     */
    @PostMapping("sdkServer/equip/getEquipPageByAddr")
    @Override
    public Page<PropertyEquipGetDTO> getEquipPageByAddr(@RequestBody SDKEquipGetPageDTO sdkEquipGetPageDTO) {
        return iSDKServerOldEquipService.getEquipPageByAddr(sdkEquipGetPageDTO);
    }

    /**
     * <desc>
     *      根据设备唯一码查询设备归属地址信息
     * <desc/>
     * @param       deviceUnique     设备唯一码
     * @return      设备归属地址信息  设备归属地信息集
     * @author Biao.R
     * @createDate 2017/11/16
     */
    @PostMapping("sdkServer/equip/getAddrNumByDeviceUnique")
    @Override
    public List<SDKUnitInfoSaveDTO> getAddrNumByDeviceUnique(@RequestParam("deviceUnique") String deviceUnique) {
        return iSDKServerOldEquipService.getAddrNumByDeviceUnique(deviceUnique);
    }

    /**
     * <desc>
     *      根据设备唯一码查询设备归属地址信息
     * <desc/>
     * @param      param    查询参数集
     * @return      设备归属地信息集
     * @author Biao.R
     * @createDate 2017/11/16
     */
    @PostMapping("sdkServer/equip/getAddrByParams")
    @Override
    public List<DeviceElevatorBridgeInfoPO> getAddrByParams(@RequestBody Map<String, Object> param) {
        return iSDKServerOldEquipService.getAddrByParams(param);
    }

    /**
     * <desc>
     *      分页查询设备通行记录
     * <desc/>
     * @param       sdkEquipGetByPageDTO    查询参数封装DTO
     * @return      查询出的分页数据
     * @author Biao.R
     * @createDate 2017/11/21
     */
    @PostMapping("sdkServer/equip/getEquipRecordPage")
    @Override
    public Page<PropertyEquipRecordGetVO> getEquipRecordPage(@RequestBody SDKEquipGetByPageDTO sdkEquipGetByPageDTO) {
        return iSDKServerOldEquipService.getEquipRecordPage(sdkEquipGetByPageDTO);
    }


    /**
     * <desc>
     *      根据设备唯一码查询设备
     * <desc/>
     * @param   deviceUnique    待查询的设备唯一码
     * @return  查询到的设备
     * @author Biao.R
     * @createDate 2017/11/23
     */
    @PostMapping("sdkServer/equip/getEquipByDeviceUnique")
    @Override
    public DeviceElevatorInfoPO getEquipByDeviceUnique(@RequestParam("deviceUnique") String deviceUnique) {
        return iSDKServerOldEquipService.getEquipByDeviceUnique(deviceUnique);
    }

    /**
     * <desc>
     *      更新动态密码到电梯权限表
     * <desc/>
     * @param  elevatorAuthPO 待更新的数据
     * @return  更新的数量
     * @author Biao.R
     * @createDate 2017/11/23
     */
    @PostMapping("sdkServer/equip/updateDynamicPwd")
    @Override
    public Integer updateDynamicPwd(@RequestBody DeviceElevatorAuthPO elevatorAuthPO) {
        return iSDKServerOldEquipService.updateDynamicPwd(elevatorAuthPO);
    }

    /**
     * <desc>
     *      根据参数查询设备（电梯或门禁）
     * <desc/>
     * @param   params  查询参数
     * @return  查询设备结果集
     * @author Biao.R
     * @createDate 2017/11/25
     */
    @PostMapping("sdkServer/equip/getEquipByParam")
    @Override
    public List<PropertyEquipGetDTO> getEquipByParam(@RequestBody Map<String, Object> params) {
        return iSDKServerOldEquipService.getEquipByParam(params);
    }

    /**
     * <desc>
     *      根据参数查询最大的deviceId
     * <desc/>
     * @param   params  查询参数
     * @return  查询出的最大deviceId,若没有，则为0
     * @author Biao.R
     * @createDate 2017/11/25
     */
    @Override
    @PostMapping("sdkServer/equip/getMaxDeviceId")
    public Integer getMaxDeviceId(@RequestBody Map<String, Object> params) {
        return iSDKServerOldEquipService.getMaxDeviceId(params);
    }

    /**
     * <desc>
     *     根据地址查询电梯信息
     * <desc/>
     * @param  projectId    操作的项目编号
     * @param  buildNum     楼栋编号（多个以英文，分隔）
     * @param  unitNum      单元编号（多个以英文，分隔）
     * @return 电梯信息集合
     * @author Biao.R
     * @createDate 2018/3/1
     */
    @Override
    @PostMapping("sdkServer/equip/getElevatorByAddress")
    public List<PropertyEquipGetDTO> getElevatorByAddress(@RequestParam("projectId") String projectId,
                                                              @RequestParam("buildNum") String buildNum,
                                                              @RequestParam("unitNum") String unitNum) {
        return iSDKServerOldEquipService.getElevatorByAddress(projectId,buildNum,unitNum);
    }


}